package pe.gob.onpe.facade.remote;

import java.util.List;
import javax.ejb.Remote;

import pe.gob.onpe.ejb.PadronElectoralSolicitante;
import pe.gob.onpe.ejb.id.PadronElectoralSolicitanteId;


/**
 * Remote interface for PadronElectoralSolicitanteFacade.
 * 
 * @author MyEclipse Persistence Tools
 */
@Remote
public interface PadronElectoralSolicitanteFacadeRemote {
	/**
	 * Perform an initial save of a previously unsaved
	 * PadronElectoralSolicitante entity. All subsequent persist actions of this
	 * entity should use the #update() method.
	 * 
	 * @param entity
	 *            PadronElectoralSolicitante entity to persist
	 * @throws RuntimeException
	 *             when the operation fails
	 */
	public void save(PadronElectoralSolicitante entity);

	/**
	 * Delete a persistent PadronElectoralSolicitante entity.
	 * 
	 * @param entity
	 *            PadronElectoralSolicitante entity to delete
	 * @throws RuntimeException
	 *             when the operation fails
	 */
	public void delete(PadronElectoralSolicitante entity);

	/**
	 * Persist a previously saved PadronElectoralSolicitante entity and return
	 * it or a copy of it to the sender. A copy of the
	 * PadronElectoralSolicitante entity parameter is returned when the JPA
	 * persistence mechanism has not previously been tracking the updated
	 * entity.
	 * 
	 * @param entity
	 *            PadronElectoralSolicitante entity to update
	 * @returns PadronElectoralSolicitante the persisted
	 *          PadronElectoralSolicitante entity instance, may not be the same
	 * @throws RuntimeException
	 *             if the operation fails
	 */
	public PadronElectoralSolicitante update(PadronElectoralSolicitante entity);

	public PadronElectoralSolicitante findById(PadronElectoralSolicitanteId id);

	/**
	 * Find all PadronElectoralSolicitante entities with a specific property
	 * value.
	 * 
	 * @param propertyName
	 *            the name of the PadronElectoralSolicitante property to query
	 * @param value
	 *            the property value to match
	 * @param rowStartIdxAndCount
	 *            Optional int varargs. rowStartIdxAndCount[0] specifies the the
	 *            row index in the query result-set to begin collecting the
	 *            results. rowStartIdxAndCount[1] specifies the the maximum
	 *            count of results to return.
	 * @return List<PadronElectoralSolicitante> found by query
	 */
	public List<PadronElectoralSolicitante> findByProperty(String propertyName,
			Object value, int... rowStartIdxAndCount);

	public List<PadronElectoralSolicitante> findByNombre(Object nombre,
			int... rowStartIdxAndCount);

	public List<PadronElectoralSolicitante> findByApellidopaterno(
			Object apellidopaterno, int... rowStartIdxAndCount);

	public List<PadronElectoralSolicitante> findByApellidomaterno(
			Object apellidomaterno, int... rowStartIdxAndCount);

	public List<PadronElectoralSolicitante> findByIdinconsistencia(
			Object idinconsistencia, int... rowStartIdxAndCount);

	public List<PadronElectoralSolicitante> findByEstadoinconsistencia(
			Object estadoinconsistencia, int... rowStartIdxAndCount);

	public List<PadronElectoralSolicitante> findByDescripcioninconsistencia(
			Object descripcioninconsistencia, int... rowStartIdxAndCount);

	/**
	 * Find all PadronElectoralSolicitante entities.
	 * 
	 * @param rowStartIdxAndCount
	 *            Optional int varargs. rowStartIdxAndCount[0] specifies the the
	 *            row index in the query result-set to begin collecting the
	 *            results. rowStartIdxAndCount[1] specifies the the maximum
	 *            count of results to return.
	 * @return List<PadronElectoralSolicitante> all PadronElectoralSolicitante
	 *         entities
	 */
	public List<PadronElectoralSolicitante> findAll(int... rowStartIdxAndCount);
	
	public Long obtenerCantidadRegistros(Long procesoElectoralId);
	

	public List<PadronElectoralSolicitante> buscarPadronSolcitante(Long procesoElectoralId,
																   String numeroDocumento,
																   String nombre,
																   String apellidoPaterno,
																   String apellidoMaterno,
																   String incosistencia,
																   String estadoIncosistencia,
																   int inicio,
																   int tamPagina);
}